iT邦幫忙

2022 iThome 鐵人賽

DAY 16
1
自我挑戰組

Python and LINE Bot系列 第 16

[Day16] 資料表操作

  • 分享至 

  • xImage
  •  

About 資料表的操作

資料表操作分別是新增( Create )、查詢( Read )、更新( Update )、刪除( Delete ),也就是所謂的 CRUD 。
 

一、新增資料 (Create)

在新增資料時,要使用資料物件將資料加入到資料表中,有三個步驟:

Step 1: 建立資料物件
Step 2: 資料必須先放到暫存資料 db.session 中,使用 add() 方法寫到暫存資料
Step 3: 將暫存資料新增到資料表,使用 commit() 方法

  1. 新增單筆資料
    這裡延續前一篇文章 [Day15] 的範例,填入姓名、電話、住址、電子郵件欄位資料,就可以新增一個學生資料物件。再來利用 add() 方法將資料暫時存到 db.session 中,最後用 commit() 方法新增到資料表裡。
    https://ithelp.ithome.com.tw/upload/images/20220929/20151448rg5eRi4v1b.png

執行程式後,開啟瀏覽器瀏覽服務的頁面,輸入 127.0.0.1:5000/insert 這個網址執行程式,顯示已新增一筆資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448DRFDLVB1Kg.png

開啟 pdAdmin 管理頁面檢視資料新增的結果。在資料庫點選 testdbSchemasPublicTablesstudents ,在 students 上按滑鼠右鍵,點選 View/Edit DataAll Rows
https://ithelp.ithome.com.tw/upload/images/20220929/20151448GOAdFKYUln.png

在右下方可以看到顯示新增的一筆資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448KNZrh8nJvu.png

  1. 新增多筆資料

同新增單筆資料的方法,先新增多個學生資料物件,再將所有學生資料物件放到串列物件中,再來利用 add() 方法將串列物件的資料暫時存到 db.session 中,最後用 commit() 方法新增到資料表裡。

https://ithelp.ithome.com.tw/upload/images/20220929/20151448uKypdzXO2E.png

執行程式後,開啟瀏覽器瀏覽服務的頁面,輸入 127.0.0.1:5000/insert2 這個網址執行程式,顯示已新增多筆資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448FpB55SsRNj.png

開啟 pdAdmin 管理頁面檢視資料新增的結果,在右下方顯示新增的多一筆資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448VbT5F6RbNO.png
 
 

二、查詢資料 (Read)

Flask-SQLAlchemy 在資料物件類別提供了 query 屬性,使用時會生成新的資料物件,將所有資料返回。取得資料的方法有 all() 方法、first() 方法、 filter_by() 方法及 get() 方法,下方將分別介紹。

  • 查詢所有資料:query.all()
datas = students.query.all()
  • 查詢第一筆資料:query.first()
datas = students.query.first()
  • 查詢時進行資料篩選:query.filter_by()
datas = students.query.filter_by(name='張同學').first()

#篩選回來的資料是串列,必須使用 all()或是 first()的方法顯示所有或第一筆資料
  • 用主索引欄位值查詢:query.get()
student = students.query.get(1)

 

範例 1:query.all() 查詢所有資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448JbcttVd6sK.png

輸入網址 127.0.0.1:5000/queryall 就能夠看到查詢的所有資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448TC72qQwK6o.png
 
範例 2:query.get() 查詢資料
https://ithelp.ithome.com.tw/upload/images/20220929/2015144833K7pVFxP8.png

在網址列最後面打上欲查詢的主索引鍵,會顯示對應的資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448oar1GE0GoU.png

 
範例 3:query.filter_by() 查詢資料,這裡的範例是以姓名作為篩選條件
https://ithelp.ithome.com.tw/upload/images/20220929/20151448rdlCir0MmA.png

在網址列最後面打上欲查詢的姓名,會顯示對應的資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448yUMRkJjbqS.png

 
 

三、更新資料 (Update)

Step 1: 將要更新的資料物件查詢出來
Step 2: 將資料物件要修改的屬性設定新的值
Step 3:db.session.commit() 方法更新到資料表中

範例:
https://ithelp.ithome.com.tw/upload/images/20220929/20151448F8NMEENqpE.png

將第五筆資料的姓名更新為李同學,電話更新為 0900123456
https://ithelp.ithome.com.tw/upload/images/20220929/20151448Z1TGiVlEAe.png

開啟 pdAdmin 管理頁面檢視資料更新的結果,在右下方顯示更新的資料
https://ithelp.ithome.com.tw/upload/images/20220929/20151448ZkKL5Mp39C.png

 
 

四、刪除資料 (Delete)

Step 1: 將要刪除的資料物件查詢出來
Step 2:db.session.delete() 刪除這個資料物件
Step 3:db.session.commit() 方法更新到資料表中

範例:
https://ithelp.ithome.com.tw/upload/images/20220929/20151448iIknd3cOUu.png
將第五筆資料刪除
https://ithelp.ithome.com.tw/upload/images/20220929/20151448T6Hclln210.png
開啟 pdAdmin 管理頁面檢視資料刪除的結果,會發現第五筆資料已被刪除
https://ithelp.ithome.com.tw/upload/images/20220929/20151448hskm05XT2r.png

 

遇到的小小問題:一開始先建立了三筆練習用的資料,刪除後再新增資料時發現 sid 就從 4 開始,雖說是主索引欄位,但應該還是有可以讓他從頭來過的辦法吧...
尚未研究出來/images/emoticon/emoticon76.gif

 
 
 
 
 

參考資料:Python與LINE Bot機器人全面實戰特訓班-Flask最強應用


上一篇
[Day15] 連結資料庫
下一篇
[Day17] SQL指令操作
系列文
Python and LINE Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言